// src/micro-app.ts
// 在主应用中创建此文件
import { registerMicroApps, start } from 'qiankun';

// 子应用配置
const microApps = [
  {
    name: 'guide-app', // 子应用名称，唯一标识
    // ⚠️ 重要：Vite 开发服务器使用 ES modules，qiankun 无法直接加载
    // 开发环境推荐方案：
    // 1. 先构建子应用：yarn build
    // 2. 启动预览服务器：yarn preview --port 4173
    // 3. 使用预览服务器地址：entry: 'http://localhost:4173'
    entry: import.meta.env.DEV 
      ? 'http://localhost:4173' // 开发环境：使用预览服务器（需要先构建）
      : '//your-domain.com/subapp', // 生产环境：使用实际部署地址
    container: '#subapp-container', // 子应用挂载的容器 ID
    activeRule: '#/guide', // 激活路由规则（HashRouter 需要使用 # 前缀）
    props: {
      // 可以传递给子应用的数据
      routerBase: '/guide',
    },
  },
];

// 注册子应用
export function registerApps() {
  registerMicroApps(microApps, {
    // 子应用加载前
    beforeLoad: (app) => {
      console.log('[主应用] 子应用加载前', app.name);
      return Promise.resolve();
    },
    // 子应用挂载前
    beforeMount: (app) => {
      console.log('[主应用] 子应用挂载前', app.name);
      return Promise.resolve();
    },
    // 子应用挂载后
    afterMount: (app) => {
      console.log('[主应用] 子应用挂载后', app.name);
      return Promise.resolve();
    },
    // 子应用卸载后
    afterUnmount: (app) => {
      console.log('[主应用] 子应用卸载后', app.name);
      return Promise.resolve();
    },
  });

  // 启动 qiankun
  start({
    sandbox: {
      // 启用样式隔离
      strictStyleIsolation: false, // 设置为 true 会使用 Shadow DOM（可能影响样式）
      experimentalStyleIsolation: true, // 实验性样式隔离
    },
    // 预加载子应用（可选）
    prefetch: false,
  });
}

